package com.hyt.it.ogt.pj.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hyt.it.ogt.pj.model.entity.Subject;
import com.hyt.it.ogt.pj.model.entity.SubjectScore;
import com.hyt.it.ogt.pj.model.vo.ObjectiveScoreVO;
import com.hyt.it.ogt.pj.model.vo.StudentMarkStatus;
import com.hyt.it.ogt.pj.model.vo.StudentSubjectSubjectiveScore;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 总分表 服务类
 * </p>
 *
 * @author qiaozj
 * @since 2020-07-09
 */
public interface ISubjectScoreService extends IService<SubjectScore> {

    /**
     * 获取考生科目得分
     *
     * @param projectId
     * @param subjectId
     * @param encodeId
     * @return
     */
    SubjectScore getStudentSubjectScore(String projectId, String subjectId, String encodeId);

    /**
     * 获取某项目或者某科目下已完成评卷数量
     *
     * @param projectId 评卷项目id
     * @param subjectId 评卷科目id
     * @return 返回数量
     */
    Integer getMarkNum(String projectId, String subjectId);

    /**
     * 初始化客观题得分
     *
     * @param projectId
     * @param admission
     */
    void initKgScore(String projectId, String admission);

    /**
     * 获取评卷状态
     *
     * @param projectId
     * @param admissionNum
     * @return
     */
    StudentMarkStatus selectStudentMarkStatus(String projectId, String admissionNum);

    /**
     * 批量获取评卷状态
     *
     * @param projectId
     * @param admissionNum
     * @return
     */
    List<StudentSubjectSubjectiveScore> selectStudentsMarkStatus(String projectId, List<String> admissionNum);

    /**
     * 获取所有考生评卷状态
     *
     * @param projectId
     * @return
     */
    Map<String, StudentMarkStatus> selectAllStudentMarkStatus(String projectId);

    /***
     * 根据准考证号查询考生客观题总成绩
     * @param projectId
     * @param admissionNums
     * @return
     */
    List<SubjectScore> getStudentSubjectiveScoreByAdmissionNum(String projectId, List<String> admissionNums);

    /**
     * 保存科目客观题分数
     *
     * @param projectId
     * @param objectiveScoreVOs
     */
    void saveObjectiveScore(String projectId, List<ObjectiveScoreVO> objectiveScoreVOs, List<Subject> subjects);

}
